home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Extra 1996 #3 / AmigaPlus_CD-ROM-EXTRA_Nr.3.bin / aminet-spiele / zwei spieler / hf disk2 / tunnel / tunnel.amos / tunnel.amosSourceCode
AMOS Source Code  |  1993-03-08  |  13KB  |  541 lines

  1. ' 2.6.95 
  2. Set Buffer 1
  3. Global ALLX,ALLY
  4.  
  5. If Prg Under
  6.    Bgrab 11
  7. Else 
  8.    Load "t:pankki.abk",11
  9. End If 
  10.  
  11. NAPPIS=Peek(Start(11))
  12. MUSAT=Peek(Start(11)+1)
  13. LEVELI=Peek(Start(11)+3)
  14.  
  15. ALLY=63
  16. ALLX=63
  17.  
  18. Screen Open 0,20,20,2,Lowres
  19. Screen Close 0
  20.  
  21. Auto View Off 
  22.  
  23. If MUSAT
  24.    If LEVELI=1
  25.       Track Load "HF2:Tunnel/EkaTunnelModule",7
  26.    Else 
  27.       Track Load "HF2:Tunnel/TokaTunnelModule",7
  28.    End If 
  29.    Track Play 7
  30. End If 
  31. Track Loop On 
  32.  
  33. Screen Open 0,320,256,32,Lowres
  34. Screen Open 1,64,74,4,Lowres
  35.  
  36. Screen To Front 0
  37.  
  38. Rem *** Siirr{ kartta KARTTA-muuttujaan    
  39.  
  40. Dim RUUDUT(18,5)
  41.  
  42. ' location in bank = X*ALLX+Y
  43.  
  44. Reserve As Data 9,4033
  45.  
  46. SATU=Rnd(5)+2
  47.  
  48. If LEVELI=1
  49.    Screen 1
  50.    Load Iff "HF2:Tunnel/Map 1.iff"
  51.    LOCX=1
  52.    LOCY=7
  53.    LOPPUX=31
  54.    LOPPUY=36
  55.    SUUNTA=3
  56. Else 
  57.    Load Iff "hf2:Tunnel/Map"+Str$(SATU)+".iff"
  58.    If SATU=40
  59.       LOCX=10
  60.       LOCY=10
  61.    End If 
  62.    If SATU=2
  63.       LOCX=1
  64.       LOCY=35
  65.       LOPPUX=31
  66.       LOPPUY=35
  67.       SUUNTA=4
  68.    End If 
  69.    If SATU=3
  70.       LOCX=14
  71.       LOCY=7
  72.       LOPPUY=7
  73.       SUUNTA=4
  74.    End If 
  75.    If SATU=4
  76.       LOCX=27
  77.       LOCY=32
  78.       LOPPUX=5
  79.       LOPPUY=10
  80.       SUUNTA=1
  81.    End If 
  82.    If SATU=5
  83.       LOCX=5
  84.       LOCY=7
  85.       LOPPUX=31
  86.       LOPPUY=36
  87.       SUUNTA=2
  88.    End If 
  89.    If SATU=6
  90.       LOCX=13
  91.       LOCY=7
  92.       LOPPUX=31
  93.       LOPPUY=36
  94.       SUUNTA=3
  95.    End If 
  96.    If SATU=7
  97.       LOCX=31
  98.       LOCY=17
  99.       LOPPUX=31
  100.       LOPPUY=36
  101.       SUUNTA=2
  102.    End If 
  103. End If 
  104.  
  105. For Y=0 To ALLY
  106.    For X=0 To ALLX
  107.       Poke Start(9)+(X*ALLX+Y),Point(X,Y)
  108.       If Peek(Start(9)+(X*ALLX+Y))=3
  109.          Poke Start(9)+(X*ALLX+Y),0
  110.       End If 
  111.    Next X
  112. Next Y
  113.  
  114. Plot LOCX+9,LOCY+4,0
  115.  
  116. Screen 0
  117.  
  118. Curs Off : Flash Off : Paper 0 : Hide : Cls 1 : Flash 15,"(0FF,2)(0DD,2)(0BB,2)(099,2)(077,2)(055,2)(077,2)(099,2)(0BB,2)(0DD,2)(0FF,2)"
  119.  
  120. Screen To Front 0
  121.  
  122. Rem *** Nappaa sein{t
  123.  
  124. '  |  | | \    / | |  |                    
  125. '  |  | | |\  /| | |  |                  
  126. '  |  | | | \/1| | |  |                          
  127. ' 1| 3|5|7|9/\0|8|6|4 |2                         
  128. '  |  | | |/  \| | |  |                    
  129. '  |  | | /    \ | |  |                  
  130. '  |  | |/      \| |  |              
  131.  
  132. Load Iff "HF2:Tunnel/1.Palat2_Taytetty_uusi"
  133. Get Icon 1+26,0,0 To 88,255
  134. Get Icon 2+26,95,0 To 188,255
  135. Get Icon 3+26,192,0 To 232,126
  136. Get Icon 4+26,232,0 To 272,126
  137. Get Icon 5+26,192,127 To 219,189
  138. Get Icon 6+26,232,127 To 252,189
  139. Get Icon 7+26,267,127 To 277,158
  140. Get Icon 8+26,291,127 To 300,158
  141. Get Icon 9+26,268,165 To 277,181
  142. Get Icon 10+26,291,165 To 301,181
  143. Load Iff "HF2:Tunnel/1.Palat3_Taytetty_uusi"
  144. Get Icon 11+26,0,0 To 41,86
  145. Get Icon 12+26,94,0 To 135,86
  146. Get Icon 13+26,192,0 To 251,63
  147. Get Icon 14+26,192,127 To 251,190
  148. Get Icon 15+26,267,127 To 299,158
  149. Get Icon 16+26,268,165 To 296,196
  150. Load Iff "HF2:tunnel/1.Palat4_Taytetty_uusi"
  151. Get Icon 17+26,0,0 To 63,50
  152. Get Icon 18+26,94,0 To 157,50
  153. Get Icon 19+26,192,0 To 240,30
  154. Get Icon 20+26,192,127 To 240,157
  155. Load Iff "HF2:tunnel/1.Seinat_Taytetty_uusi"
  156. Get Icon 23+26,1,1 To 161,126
  157. Get Icon 24+26,1,127 To 81,191
  158. Get Icon 25+26,1,191 To 41,222
  159. Get Icon 26+26,1,223 To 21,239
  160.  
  161. Load Iff "hf2:tunnel/2.Seinat_Taytetty_uusi"
  162. For COUNTER=1+52 To 22+52
  163.    Get Icon COUNTER,160,1 To 176,2
  164. Next COUNTER
  165. Get Icon 23+52,1,1 To 160,126
  166. Get Icon 24+52,1,127 To 81,191
  167. Get Icon 25+52,1,191 To 41,222
  168. Get Icon 26+52,1,223 To 21,239
  169.  
  170. Make Icon Mask 
  171. Cls 0
  172.  
  173. Colour 15,$F00
  174. Colour 0,0
  175.  
  176. Double Buffer 
  177.  
  178. Autoback 0
  179. Update Off 
  180.  
  181. Screen Swap 
  182. Wait Vbl 
  183. Bob Clear 
  184. Proc PAIVITA
  185.  
  186. View 
  187.  
  188. Timer=0
  189.  
  190. Do 
  191.    If LOPPUY-1=LOCY and LOPPUX=LOCX or LOPPUY+1=LOCY and LOPPUX=LOCX or LOPPUX-1=LOCX and LOPPUY=LOCY or LOPPUX+1=LOCX and LOPPUY=LOCY
  192.       Poke Start(11)+2,0
  193.       'For A=1 To 5
  194.       '   Zoom Physic(0),80,64,240,192 To Logic(0),0,0,320,256 
  195.       '   Screen Swap  
  196.       'Next A
  197.       Exit 
  198.    End If 
  199.    A$=Inkey$
  200.    If A$="m"
  201.       If MUSAT
  202.          Erase 7
  203.       Else 
  204.          If LEVELI=1
  205.             Track Load "HF2:Tunnel/EkaTunnelModule",7
  206.          Else 
  207.             Track Load "HF2:Tunnel/TokaTunnelmodule",7
  208.          End If 
  209.          Track Play 7
  210.       End If 
  211.       Bchg 0,MUSAT
  212.    End If 
  213.    If Key State(1)
  214.       Add NAPPIS,1,0 To 2
  215.       While Key State(1) : Wend 
  216.    End If 
  217.    If A$="" or NAPPI2=10 Then Goto EINAPPIA
  218.    If NAPPI=0
  219.    If A$="i" : NAPPI=1 : Else : NAPPI=0 : End If 
  220.    Else 
  221.       If NAPPI=1
  222.       If Not A$="i" : If A$="d" : NAPPI=2 : Else : NAPPI=0 : End If : End If 
  223.       Else 
  224.          If NAPPI=2
  225.          If Not A$="d" : If A$="k" : NAPPI=3 : Else : NAPPI=0 : End If : End If 
  226.          Else 
  227.             If NAPPI=3
  228.             If Not A$="k" : If A$="f" : NAPPI=4 : Else : NAPPI=0 : End If : End If 
  229.             Else 
  230.                If NAPPI=4
  231.                   If Not A$="f"
  232.                      If A$="a"
  233.                         Load "HF2:Tunnel/hfTunnel.Abk"
  234.                         Get Bob Palette 
  235.                         Noise To 15
  236.                         Track Stop 
  237.                         For A=96 To 1 Step -2
  238.                            Play 56-A/2,0
  239.                            Bob 1,60,165+A,1
  240.                            Bob Draw 
  241.                            Screen Swap 
  242.                            Wait Vbl 
  243.                            Bob Clear 
  244.                         Next A
  245.                         If MUSAT
  246.                            Track Play 7
  247.                         End If 
  248.                         NAPPI=5
  249.                      Else 
  250.                         NAPPI=0
  251.                      End If 
  252.                   End If 
  253.                End If 
  254.             End If 
  255.          End If 
  256.       End If 
  257.    End If 
  258. If NAPPI2=0 : If A$="i" : NAPPI2=1 : Else : NAPPI2=0 : End If 
  259.    Else 
  260.    If NAPPI2=1 : If Not A$="i" : If A$="d" : NAPPI2=2 : Else : NAPPI2=0 : End If : End If 
  261.       Else 
  262.       If NAPPI2=2 : If Not A$="d" : If A$="s" : NAPPI2=3 : Else : NAPPI2=0 : End If : End If 
  263.          Else 
  264.          If NAPPI2=3 : If Not A$="s" : If A$="p" : NAPPI2=4 : Else : NAPPI2=0 : End If : End If 
  265.             Else 
  266.             If NAPPI2=4 : If Not A$="p" : If A$="i" : NAPPI2=5 : Else : NAPPI2=0 : End If : End If 
  267.                Else 
  268.                If NAPPI2=5 : If Not A$="i" : If A$="s" : NAPPI2=6 : Else : NAPPI2=0 : End If : End If 
  269.                   Else 
  270.                   If NAPPI2=6 : If Not A$="s" : If A$="p" : NAPPI2=7 : Else : NAPPI2=0 : End If : End If 
  271.                      Else 
  272.                      If NAPPI2=7 : If Not A$="p" : If A$="o" : NAPPI2=8 : Else : NAPPI2=0 : End If : End If 
  273.                         Else 
  274.                         If NAPPI2=8 : If Not A$="o" : If A$="p" : NAPPI2=9 : Else : NAPPI2=0 : End If : End If 
  275.                            Else 
  276.                            If NAPPI2=9 : If Not A$="p" : If A$="d" : NAPPI2=10 : Else : NAPPI2=0 : End If : End If 
  277.                               Else 
  278.                               End If 
  279.                            End If 
  280.                         End If 
  281.                      End If 
  282.                   End If 
  283.                End If 
  284.             End If 
  285.          End If 
  286.       End If 
  287.    End If 
  288.    EINAPPIA:
  289.    
  290.    If NAPPIS=2
  291.       TIKKU=0
  292.       K=Key Shift
  293.       ' Up 
  294.       If Peek(Start(11)+6)<$80
  295.          If Key State(Peek(Start(11)+6))
  296.             Bset 0,TIKKU
  297.          End If 
  298.       Else 
  299.          If Peek(Start(11)+6)-$80=K
  300.             Bset 0,TIKKU
  301.          End If 
  302.       End If 
  303.       ' Down 
  304.       If Peek(Start(11)+8)<$80
  305.          If Key State(Peek(Start(11)+8))
  306.             Bset 1,TIKKU
  307.          End If 
  308.       Else 
  309.          If Peek(Start(11)+8)-$80=K
  310.             Bset 1,TIKKU
  311.          End If 
  312.       End If 
  313.       ' Left   
  314.       If Peek(Start(11)+10)<$80
  315.          If Key State(Peek(Start(11)+10))
  316.             Bset 2,TIKKU
  317.          End If 
  318.       Else 
  319.          If Peek(Start(11)+10)-$80=K
  320.             Bset 2,TIKKU
  321.          End If 
  322.       End If 
  323.       ' Right
  324.       If Peek(Start(11)+12)<$80
  325.          If Key State(Peek(Start(11)+12))
  326.             Bset 3,TIKKU
  327.          End If 
  328.       Else 
  329.          If Peek(Start(11)+12)-$80=K
  330.             Bset 3,TIKKU
  331.          End If 
  332.       End If 
  333.    Else 
  334.       TIKKU=Joy(NAPPIS)
  335.    End If 
  336.    
  337.    If Btst(0,TIKKU)
  338.       If RUUDUT(9,3)=0 or NAPPI2=10
  339.          If SUUNTA=3
  340.             Inc LOCY
  341.          End If 
  342.          If SUUNTA=1
  343.             Dec LOCY
  344.          End If 
  345.          If SUUNTA=2
  346.             Dec LOCX
  347.          End If 
  348.          If SUUNTA=4
  349.             Inc LOCX
  350.          End If 
  351.          Proc PAIVITA
  352.       End If 
  353.    End If 
  354.    If Btst(1,TIKKU)
  355.       If RUUDUT(9,5)=0 or NAPPI2=10
  356.          If SUUNTA=3
  357.             Dec LOCY
  358.          End If 
  359.          If SUUNTA=1
  360.             Inc LOCY
  361.          End If 
  362.          If SUUNTA=2
  363.             Inc LOCX
  364.          End If 
  365.          If SUUNTA=4
  366.             Dec LOCX
  367.          End If 
  368.          Proc PAIVITA
  369.       End If 
  370.    End If 
  371.    If Btst(3,TIKKU)
  372.       Dec SUUNTA
  373.       If SUUNTA=0
  374.          SUUNTA=4
  375.       End If 
  376.       Proc PAIVITA
  377.    End If 
  378.    If Btst(2,TIKKU)
  379.       Inc SUUNTA
  380.       If SUUNTA=5
  381.          SUUNTA=1
  382.       End If 
  383.       Proc PAIVITA
  384.    End If 
  385.    
  386.    Screen 1
  387.    If LEVELI=1 Then AIKA=110-Timer/50 Else AIKA=170-Timer/50
  388.    Ink 0
  389.    Bar 0,94 To 32,102
  390.    Ink 1,0
  391.    Text 0,65,Str$(AIKA)+" "
  392.    Get Sprite 1,3,0,59 To 32,67
  393.    Screen 0
  394.    Bob 2,160,10,3
  395.    
  396.    Bob Draw 
  397.    Screen Swap 
  398.    Wait Vbl 
  399.    Bob Clear 
  400.    Screen Copy Physic To Logic
  401.    Bob Draw 
  402.    
  403.    Screen Swap 
  404.    Wait Vbl 
  405.    Bob Clear 
  406.    
  407.    If AIKA<0
  408.       Poke Start(11)+2,1
  409.       Fade 10
  410.       Wait 130
  411.       Exit 
  412.    End If 
  413.    
  414. '   If Mouse Key=2 
  415. '      Timer=Timer+1000
  416. '   End If 
  417. Loop 
  418. Screen Close 1
  419. Erase 2
  420. If Prg Under
  421.    Poke Start(11),NAPPIS
  422.    Poke Start(11)+1,MUSAT
  423.    Bsend 11
  424. End If 
  425. End 
  426.  
  427. Procedure PAIVITA
  428.    Shared RUUDUT(),SUUNTA,LOCX,LOCY,LOPPUX,LOPPUY
  429.    
  430.    If SUUNTA=1
  431.       For Y=0 To 5
  432.          For X=0 To 16
  433.             RUUDUT(X,Y)=Peek(Start(9)+((LOCX+X)*ALLX+LOCY+Y))
  434.          Next X
  435.       Next Y
  436.    Else 
  437.       If SUUNTA=3
  438.          For Y=0 To 5
  439.             For X=0 To 16
  440.                RUUDUT(X,Y)=Peek(Start(9)+((LOCX+(18-X))*ALLX+(LOCY+(8-Y))))
  441.             Next X
  442.          Next Y
  443.       Else 
  444.          If SUUNTA=2
  445.             For Y=0 To 5
  446.                For X=0 To 16
  447.                   RUUDUT(X,Y)=Peek(Start(9)+((LOCX+Y+5)*ALLX+(LOCY+(18-X)-5)))
  448.                Next X
  449.             Next Y
  450.          Else 
  451.             If SUUNTA=4
  452.                For Y=0 To 5
  453.                   For X=0 To 16
  454.                      RUUDUT(X,Y)=Peek(Start(9)+((LOCX+(8-Y)+5)*ALLX+(LOCY+X-5)))
  455.                   Next X
  456.                Next Y
  457.             End If 
  458.          End If 
  459.       End If 
  460.    End If 
  461.    Ink 0
  462.    Bar 0,0 To 319,255
  463.    Proc SEINAT
  464.    Locate 10,1
  465.    Ink 15
  466.    If SUUNTA=1 Then Print "N"
  467.    If SUUNTA=2 Then Print "W"
  468.    If SUUNTA=3 Then Print "S"
  469.    If SUUNTA=4 Then Print "E"
  470.    
  471.    Rem *** Show close map 
  472.    
  473.    X=0 : Y=0
  474.    Screen 1
  475.    Get Block 1,LOCX,LOCY,17,17
  476.    Screen 0
  477.    Ink 0
  478.    Bar 1,1 To 33,19
  479.    Put Block 1,1,1
  480.  
  481.    Plot 10,5,15
  482.    Plot LOPPUX-LOCX+10,LOPPUY-LOCY+5,15
  483. End Proc
  484.  
  485. Procedure SEINAT
  486.    Rem *** N{yt{ sein{t-blokit  
  487.    
  488.    Shared RUUDUT()
  489.    
  490.    Rem ** Uloimmat sein{t 
  491.    
  492.    
  493.    For A=1 To 17
  494.       If RUUDUT(A,0)>0 Then Paste Icon A*20-30,120,26*RUUDUT(A,0)+26
  495.    Next A
  496.    
  497.    If RUUDUT(6,1)>0 Then Paste Icon 64,112,26*RUUDUT(6,1)+19
  498.    If RUUDUT(12,1)>0 Then Paste Icon 214,112,26*RUUDUT(12,1)+20
  499.    
  500.    If RUUDUT(7,1)>0 Then Paste Icon 100,112,26*RUUDUT(7,1)+15
  501.    If RUUDUT(11,1)>0 Then Paste Icon 192,112,26*RUUDUT(11,1)+16
  502.    
  503.    If RUUDUT(8,1)>0 Then Paste Icon 143,114,26*RUUDUT(8,1)+7
  504.    If RUUDUT(10,1)>0 Then Paste Icon 173,112,26*RUUDUT(10,1)+8
  505.    
  506.    Rem ** Toiseksi uloimmat sein{t. 
  507.    
  508.    For A=1 To 9
  509.       If RUUDUT(A+4,1)>0 Then Paste Icon A*40-57,112,26*RUUDUT(A+4,1)+25
  510.    Next A
  511.    
  512.    If RUUDUT(6,2)>0 Then Paste Icon 0,102,26*RUUDUT(6,2)+17
  513.    If RUUDUT(12,2)>0 Then Paste Icon 259,102,26*RUUDUT(12,2)+18
  514.    
  515.    If RUUDUT(7,2)>0 Then Paste Icon 42,95,26*RUUDUT(7,2)+13
  516.    If RUUDUT(11,2)>0 Then Paste Icon 220,95,26*RUUDUT(11,2)+14
  517.    
  518.    If RUUDUT(8,2)>0 Then Paste Icon 121,97,26*RUUDUT(8,2)+5
  519.    If RUUDUT(10,2)>0 Then Paste Icon 182,95,26*RUUDUT(10,2)+6
  520.    
  521.    Rem ** Kolmanneksi uloimmat sein{t 
  522.    
  523.    For A=1 To 5
  524.       If RUUDUT(6+A,2)>0 Then Paste Icon A*80-118,95,26*RUUDUT(6+A,2)+24
  525.    Next A
  526.    
  527.    If RUUDUT(7,3)>0 Then Paste Icon 0,83,26*RUUDUT(7,3)+11
  528.    If RUUDUT(11,3)>0 Then Paste Icon 279,83,26*RUUDUT(11,3)+12
  529.    
  530.    If RUUDUT(8,3)>0 Then Paste Icon 82,65,26*RUUDUT(8,3)+3
  531.    If RUUDUT(10,3)>0 Then Paste Icon 202,65,26*RUUDUT(10,3)+4
  532.    
  533.    Rem ** L{himm{t sein{t 
  534.    
  535.    If RUUDUT(8,3)>0 Then Paste Icon -78,65,26*RUUDUT(8,3)+23
  536.    If RUUDUT(9,3)>0 Then Paste Icon 81,65,26*RUUDUT(9,3)+23
  537.    If RUUDUT(10,3)>0 Then Paste Icon 240,65,26*RUUDUT(10,3)+23
  538.    
  539.    If RUUDUT(8,4)>0 Then Paste Icon 0,0,26*RUUDUT(8,4)+1
  540.    If RUUDUT(10,4)>0 Then Paste Icon 240,0,26*RUUDUT(10,4)+2
  541. End Proc